﻿using System.Collections.Generic;
using System.Linq;
using ClickLand.CorporacionPlaza.Comunes.Entidades;
using ClickLand.CorporacionPlaza.Comunes.EntidadesDto;

namespace ClickLand.CorporacionPlaza.Traductores
{
    /// <summary> Clase que traduce la entidad cliente en un objeto serializable y viceversa </summary>
    public class TraductorCliente
    {
        /// <summary> Metodo que transforma un Dto en una entidad </summary>
        /// <param name="dto">Datos del dto a transformar en entidad</param>
        /// <returns>Entidad</returns>
        public static Cliente ObtenerEntidad(ClienteDto dto)
        {
            Cliente entidad = new Cliente();
            entidad.Id = dto.Id;
            entidad.Estado = dto.Estado;
            entidad.Correo = dto.Correo;
            entidad.DocumentoIdentificacion = dto.DocumentoIdentificacion;
            entidad.Nombre = dto.Nombre;
            entidad.Responsable1 = dto.Responsable1;
            entidad.Responsable2 = dto.Responsable2;
            entidad.Responsable3 = dto.Responsable3;
            entidad.NumeroCelular = dto.NumeroCelular;
            entidad.NumeroOficina = dto.NumeroOficina;
            entidad.Tipo = dto.Tipo;

            return entidad;
        }


        /// <summary> Metodo que transforma un Entidad en una Dto </summary>
        /// <param name="entidad">Datos de la entidad a transformar en Dto</param>
        /// <returns>Dto</returns>
        public static ClienteDto ObtenerDto(Cliente entidad)
        {
            ClienteDto dto = new ClienteDto();
            dto.Id = entidad.Id;
            dto.Estado = entidad.Estado;
            dto.Correo = entidad.Correo;
            dto.DocumentoIdentificacion = entidad.DocumentoIdentificacion;
            dto.Nombre = entidad.Nombre;
            dto.Responsable1 = entidad.Responsable1;
            dto.Responsable2 = entidad.Responsable2;
            dto.Responsable3 = entidad.Responsable3;
            dto.NumeroCelular = entidad.NumeroCelular;
            dto.NumeroOficina = entidad.NumeroOficina;
            dto.Tipo = entidad.Tipo;
            return dto;
        }


        /// <summary> Metodo que transforma una lista de entidad en una lista de Dto </summary>
        /// <param name="lista">lista con los Datos de la entidad a transformar en Dto</param>
        /// <returns>Dto</returns>
        public static List<ClienteDto> ObtenerListaDto(IList<Cliente> lista)
        {
            return lista.Select(ObtenerDto).ToList();
        }


        /// <summary> Metodo que transforma una lista de dto en una lista de entidad </summary>
        /// <param name="lista">lista con los Datos de la entidad a transformar en Dto</param>
        /// <returns>Lista de entidad</returns>
        public static IList<Cliente> ObtenerListaEntidad(List<ClienteDto> lista)
        {
            return lista.Select(ObtenerEntidad).ToList();
        }
    }
}
